home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
misc
/
avmnfaxsrc1_33.lha
/
config.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-05-25
|
1KB
|
82 lines
/* $Header$ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config_proto.h"
/* EXPORTS */
/* IMPORTS */
/* LOCALS */
int getInt(FILE* fp) {
char temp[32];
int result;
fgets(temp, sizeof(temp), fp);
sscanf(temp, "%d", &result);
return result;
}
void mystrncpy(char* dest, char* src, int len) {
strncpy(dest, src, len - 1);
dest[len - 1] = '\0';
}
void killNewLine(char* line) {
int i;
int len = strlen(line);
for (i = 0; i < len; i++)
if (line[i] == '\n' || line[i] == '\r') line[i] = '\0';
}
void getString(FILE* fp, char* buffer, int size) {
static char temp[2000];
fgets(temp, sizeof(temp), fp);
mystrncpy(buffer, temp, size);
killNewLine(buffer);
}
void extractVariableValue(char* s, char* var, char* val) {
char* equals;
equals = strchr(s, '=');
if (equals) {
// found
mystrncpy(var, s, (equals - s) + 1);
strcpy(val, equals + 1);
} else {
strcpy(var, "");
strcpy(val, "");
}
}
void loadConfig(char* fileName, loaderFuncPtr processConfig) {
static char buffer[1024];
static char variable[32];
static char value[512];
FILE* fp;
fp = fopen(fileName, "r");
if (!fp) {
// printf("Unable to open config file\n");
return;
}
while (!feof(fp)) {
getString(fp, buffer, sizeof(buffer));
if (feof(fp)) break;
extractVariableValue(buffer, variable, value);
processConfig(variable, value);
}
fclose(fp);
return;
}